[ 紀錄 ] 部屬 AWS EC2 雲端主機 + LAMP Server + phpMyAdmin


Posted by krebikshaw on 2020-09-15

註冊 AWS 會員

  1. 填妥個人資料,地址要轉換成英文地址,可以利用中文地址英譯系統
  2. 填寫信用卡資訊(用的是免費方案,但是註冊都需要填寫信用卡資訊)
  3. 驗證手機(會發送簡訊做驗證)

進入主控台

註冊完成後,進入「免費方案」的主控台

選擇「啟動虛擬主機」(使用 EC2)

選擇「Ubuntu Server 18.04 LTS (HVM), SSD Volume Typ」

選有「綠色」標章的,免費方案

從 step3 開始,一路按「Next」,按到看到 step6 出現就煞住。

step6 這邊要按「Add Rule」,新增兩個欄位,選擇「HTTP 跟 HTTPS」,後面的資料它會自己幫你帶入,新增完之後就可以按下右下角的「 Review and Launch 」

這裡會跟你確認剛剛做的設定,按下右下角「 Launch 」進入下一步

接著會跳出這個選擇私鑰的視窗
我們要建立一個新的,選則「create a new key pair」,自行輸入底下的名稱,按下「Download Key Pair」下載下來的檔案要保存起來

下載好之後就可以按「 Launch Instances」來啟動設置

右下角「View Instances」回到管理介面

這邊可以看到你的 Server 已經在啟動狀態了,把畫面往右拉,找到「IPv4 Public IP」 把這組 IP 記起來就完成了

連線囉!


畫面上方,有一個 Connect 的按鈕,裡面有讓你從 CLI 連線的兩行指令

chmod 400 <私鑰檔案路徑>

ssh -i "<私鑰檔案路徑>" ubuntu@ec2-< IPv4 位置>.us-east-2.compute.amazonaws.com

輸入完成看到下面這個畫面就代表連線成功囉~

設定 LAMP:

  1. 更新 ubuntu 的系統
    $ sudo apt update && sudo apt upgrade && sudo apt dist-upgrade
    
    跳出訊息,是否安裝?或佔用空間 xxx,記得輸入:y
    (會跳出紫色選項,選擇 keep the local version currently installed)
  2. 安裝 Tasksel
    $ sudo apt install tasksel
    
    跳出訊息,是否安裝?或佔用空間 xxx。輸入:y
  3. 用 Tasksel 下載 lamp-server
    $ sudo tasksel install lamp-server
    
    (會跑一個下載中的紫色框)

這時候,就可以到瀏覽器,輸入 IP 位置,看看剛出生的伺服器

設定 phpmyadmin

  1. 下載 phpmyadmin
    $ sudo apt install phpmyadmin
    
  2. 連接 apache2(按空白鍵,有顯示*字號,再按 Enter)
  3. 設定密碼(設定完成後,按下方向鍵,OK 字樣會反紅,就可以按 Enter 繼續)
  4. 完成密碼設置

設置密碼

  1. 改變 phpmyadmin 登入的設定,改成可以用密碼登入
    $ sudo mysql -u root mysql
    
    輸入:
    $ UPDATE user SET plugin='mysql_native_password' WHERE User='root';
    $ FLUSH PRIVILEGES;
    
    離開 sql 指令
    $ exit
    
  2. 設定 root 的密碼
    $ sudo mysql_secure_installation
    
  3. 是否設定密碼? $ y
    這時候會跳出選擇密碼強度,然後才設定密碼
    有三個選項,建議直接選 0(選了 1 之後中英文大小寫+符號混用還要一定的長度)
    所以除非是需要很注重安全性,否則選 0 之後繼續
  4. 輸入符合規定的密碼。
    直接輸入 預設置密碼 這時候密碼不會顯示所以不要認為沒有輸入成功。
    確定設這個密碼嗎? $ y
    幾個設定的問題都可以選 yes
    最後會出現 All Done!
  5. 就可以在瀏覽器輸入自己的 IPv4/phpmyadmin 就看到登入畫面了
    帳號:root
    密碼:前面設定的密碼

故障排除

這邊我嘗試在瀏覽器輸入自己的 IPv4/phpmyadmin,會出現 404 Not Found 頁面
在 Google 下關鍵字「ec2 phpmyadmin not found」搜尋有找到解決方式:

  1. 方法1:(我用這個解決的)
    The requested URL /phpmyadmin was not found on this server.
    在 CLI 下這段命令,
    sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
    
    再重新於瀏覽器上刷新 phpmyadmin 頁面
  2. 方法2:
    // link configure file to apache
    $ sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf.d/phpmyadmin.conf
    // restart apache
    $ sudo /etc/init.d/apache2 restart
    
  3. 方法3: 關於phpmyadmin的問題
    重新設定你的「phpmyadmin」:
    sudo dpkg-reconfigure phpmyadmin
    

排除故障後,就可以看到登入畫面了

測試檔案

現在來測試把檔案放上去。輸入 cd .. 兩次,退到根目錄底下,
可以用 ls 找到 var 資料夾。

然後連進去

cd var/www/html

嘗試 touch 裡面的檔案

touch index.php

會發現權限不夠,所以要來修改一下權限

$ sudo chown ubuntu /var/www/html

修改完成後就可以成功的編輯檔案了,在這邊先用 vim 測試改成 hello, world

vim index.php

<?php
  echo 'hello, world';
?>

接著可以到瀏覽器上,在網址輸入

IPv4/index.php

可以成功看到剛剛輸入的 hello, world 囉

設定域名

先連至 gendi.net 註冊帳號(記得進入信箱收取驗證信)

註冊完成後,我們要開始購買網域,點選購物,可以看到下面這個畫面,我們要選「域名」

輸入自己想要的域名,並且加入購物車之後,就要來填寫購買資訊了

進入結帳流程之前,要先同意所有合約,「若是有折扣碼,可以在此填寫」

這樣就完成囉,官方會在交易完成後再寄送一封認證信到信箱,要記得去驗證

接下來就要設定域名了,回到首頁之後重新登入,就可以看到下面這個畫面,點選左邊的「域名」

在區域檔紀錄底下,把 A 的 IPv4 改成 AWS 的 IP 就可以囉

恭喜你成功部署好自己的 Server ,只要在網址打上

<域名>/index.php

就可以看到之前設定的 hello, world 了!

最後一步!開始將寫好的程式部署到 Server

放檔案的方式有很多種,目前先嘗試用熟悉的 GitHub 來操作看看

  1. 在 GitHub 上面開設一個 repository
  2. 把 repository 的網址複製起來
  3. 回到本地端,把要上傳的資料獨立到同一個資料夾
    (建議先上傳一個簡單的 hello world 程式,並且先把 .gitignore 的檔案傳上去,等成功了之後再來上傳其他完整的程式。若想直接上傳完整程式,一定要先把 conn.php 拿掉,因為 .gitignore 檔案還沒上傳之前,並不會讓 conn.php 被忽略)
  4. CLI,切換到該資料夾,輸入:
    git remote add origin [GitHub 網址]
    
  5. 接著按照下面步驟把資料弄上新的 repository:
  6. 開分支 git branch "branch-name"
  7. 切到該分支 git branch "branch-name"
  8. 上傳 git commit -am "test"
  9. git push origin branch-name
  10. 然後 GitHub 上面 marge。

回到 server 端

在 CLI 處於 var/www/html 的情況下,把 repository 整個 clone 下來

git clone <GitHub 網址>

(如果剛剛是直接把忽略 conn.php 的完整程式上傳,此時需要手動在 CLI 把 conn.php 建立回去)

成功上傳伺服器之後。就可以通過 域名/對應路徑/index.php 看看網頁是否可以正常運行啦。

File Zilla 設定

參考[AWS] 透過 FileZilla 使用 key-pairs 登入 AWS EC2 存取檔案


#aws #LAMP #PHP







Related Posts

Inside look at modern web browser

Inside look at modern web browser

從找房子理解 ETL scheduling

從找房子理解 ETL scheduling

該如何入門 CTF 中的 Web 題?

該如何入門 CTF 中的 Web 題?


Comments